
export default class extends Laya.Script {

    //挂在玩家上的控制脚本
    
    //设置当前脚本调用自身为动画类型
    owner=this.owner as Laya.Animation;
    //设置一个新的玩家的刚体组件类型，用来装获取来的刚体组件
    playerRb = new Laya.RigidBody;
    //设置游戏结束判断
    isOver = false;
    constructor() { super(); 
    }
    onAwake(){
    //获取玩家自身刚体
    this.playerRb = this.owner.getComponent(Laya.RigidBody);
    //监听鼠标按下事件，调用MoveUP方法
    Laya.stage.on(Laya.Event.MOUSE_DOWN,this,this.MoveUp);
    //监听发Again广播事件，就是再玩一次，调用againGame方法
    Laya.stage.on("Again",this,this.againGame);
    //监听Start广播事件，就是点击开始游戏，调用GameStart方法
    Laya.stage.on("Start",this,this.GameStart);
    //设置游戏结束判断为true
    this.isOver = true;
    //获取自身的刚体组件中的类型，设置为静态，这样开始游戏前，玩家就不会受刚体重力掉落
    this.owner.getComponent(Laya.RigidBody).type = "static";
    }
    
    onUpdate(){
        //如果游戏结束，就返回
        if(this.isOver) return;
        //如果自身动画播放结束，则播放动画状态Idle，默认动画状态
        if(this.owner.isPlaying == false){
            this.owner.autoAnimation="Idle";
        }
    }
    //鼠标点击跳起方法
    MoveUp(){
        //如果游戏结束，则返回，不执行之后的代码。
        if(this.isOver) return;
        //改变自身刚体组件的线性运动速度实现跳跃
        this.playerRb.linearVelocity={x:0,y:-10};
        //设置自身的动画状态为Fly，飞行动画状态
        this.owner.autoAnimation="Fly";
        //播放飞行音效
        Laya.SoundManager.playSound("audio/fly.mp3",1);
        //自身动画循环关闭
        this.owner.loop=false;
    }
    //碰撞检测事件
    onTriggerEnter(other: any, self: any, contact: any): void {
        //如果自身碰撞器碰到名字为Top的组件，就是顶部，就返回，不执行之后的代码
        if(other.owner.name == "Top"){
            return;
        }
        //如果游戏结束，返回，不执行之后的代码
        if(this.isOver == true) return;
        //设置动画状态为Die，死亡动画状态
        this.owner.autoAnimation = "Die";
        //播放死亡音效
        Laya.SoundManager.playSound("audio/hit.mp3",1);
        //设置游戏结束为true
        this.isOver = true;
        //广播Over游戏结束事件。
        Laya.stage.event("Over");
    }
    //再来一次游戏方法
    againGame(){
        //设置游戏结束为fales
        this.isOver = false;
        //设置玩家初始位置
        this.owner.pos(550,450);
        //设置玩家动画状态为Idle，初始动画状态
        this.owner.autoAnimation = "Idle";
    }
    //游戏开始方法
    GameStart(){
        //设置游戏结束为false
        this.isOver = false;
        //设置玩家刚体类型为dynamic，动态，这样就会受到刚体自身重力掉落。
        this.owner.getComponent(Laya.RigidBody).type = "dynamic";
    }
    }